package com.hua.argi;

import org.omg.CORBA.NO_IMPLEMENT;

/**
 * @author: _hua
 * @created: 2019/3/31.
 * @updater:
 * @description:在有序链表中，数据是按照关键值有序排列的。
 * 一般在大多数需要使用有序数组的场合也可以使用有序链表。
 * 有序链表优于有序数组的地方是插入的速度（因为元素不需要移动），
 * 另外链表可以扩展到全部有效的使用内存，而数组只能局限于一个固定的大小中。
 */
public class OrderLinkedList {

    private  Node head;
    public OrderLinkedList(){
        this.head=null;
    }

    private class Node {
        private int data;
        private Node next;

        public Node(int data){
           this.data=data;
        }
    }

    //插入节点，并按照从小打到的顺序排列
    public void insert(int value){
        Node newNode = new Node(value);

        Node current = head;
        Node preNode = null;
        while(current != null && value>current.data){
            preNode =current;
            current=current.next;
        }

        if(preNode==null){
            newNode.next=head;//next存储原head
            head=newNode;//head存储新节点
        }else {
            preNode.next=newNode;
            newNode.next=current;
        }
    }
    //删除头节点
    public void deleteHead(){
        if(head!=null){
            head=head.next;
        }
    }

    public void display(){
        if(head==null){
            System.out.println("链表为空====================");
        }
        Node current =head;
        System.out.print("[");
        while (current!=null){
            System.out.print(current.data);
            current=current.next;
        }
        System.out.print("]");
    }

}
